--[[
    @Author       : GGELUA
    @Date         : 2022-03-28 10:46:04
Last Modified by: GGELUA
Last Modified time: 2023-05-25 16:57:25
--]]
local 坐骑属性 = 多开数据[多开数据.当前].__UI界面.窗口层:创建窗口("坐骑属性",0,0,780,500)
local 当前 = 多开数据.当前
local lsb = {"   体质","   魔力","   力量","   耐力","   敏捷"," 主属性","成   长","技能点","好感度","初始成长","当前经验","升级经验"}
local lsb2 = {"体质","魔力","力量","耐力","敏捷","主属性","成长","可用技能点","好感度","初始成长","当前经验","最大经验"}
function 坐骑属性:初始化()
    __置窗口坐标(self)
    local nsf = require('SDL.图像')(780,500)
    if nsf:渲染开始() then
        置窗口背景("坐骑属性",0,12,770,485,true):显示(0,0)
        取输入背景(0,0,160,23):显示(26,77)
        __res:getPNGCC(3,375,388,145,149):显示(77,118)
        -- __res:getPNGCC(3,684,411,57,174):显示(247,116)
        nsf:渲染结束()
    end
    self:置精灵(nsf:到精灵())
    self.选中坐骑 = nil
    self.模型格子 = __UI模型格子.创建(当前)
end

function 坐骑属性:更新(dt)
    self.模型格子:更新(dt)
end

function 坐骑属性:显示(x,y)
    if self.数据 then
        self.数据:显示(x,y)
    end
    self.模型格子:显示(x,y)
end

function 坐骑属性:打开()
    self:置可见(true)
    self.选中坐骑 = nil
    坐骑属性.头像网格:置头像(多开数据[当前].角色信息.坐骑列表)
    坐骑属性.属性:重置()
    坐骑属性.装备网格:置物品({})
    坐骑属性.名称输入:清空()
    self.模型格子:置数据()
    self.技能:重置()
    self.技能.选中技能=nil
end

function 坐骑属性:刷新()
    self.选中坐骑 = nil
    坐骑属性.头像网格:置头像(多开数据[当前].角色信息.坐骑列表)
    坐骑属性.属性:重置()
    坐骑属性.装备网格:置物品({})
    坐骑属性.名称输入:清空()
    self.模型格子:置数据()
    self.技能:重置()
    self.技能.选中技能=nil
end

function 坐骑属性:刷新属性()
    if self.选中坐骑 and 多开数据[当前].角色信息.坐骑列表[self.选中坐骑] then
        self.属性:重置()
    end
end

function 坐骑属性:重置()
    if not self.选中坐骑 then
        self.数据 = nil
    else
        local nsf = require('SDL.图像')(250,300)
        if nsf:渲染开始() then
            字体18:置颜色(255,255,255)
            字体18:取图像("等级 "..多开数据[当前].角色信息.坐骑列表[坐骑属性.选中坐骑].等级):置混合(0):显示(100,270)
            nsf:渲染结束()
        end
        self.数据 = nsf:到精灵()
    end
    self.技能.选中技能=nil
end

function 坐骑属性:重置模型()
    if not 多开数据[当前].角色信息.坐骑列表[坐骑属性.选中坐骑] then return end
    self.模型格子:置数据(多开数据[当前].角色信息.坐骑列表[坐骑属性.选中坐骑],"召唤兽",150,225)
end

local 关闭 = 坐骑属性:创建我的按钮(__res:getPNGCC(1,401,0,46,46),"关闭",730,0)

function 关闭:左键弹起(x,y,msg)
    多开数据[当前].__UI界面.窗口层.坐骑属性:置可见(false)
end

local 名称输入 = 坐骑属性:创建输入("名称输入",35,80,140,18)
function 名称输入:初始化()
    self:取光标精灵()
    self:置限制字数(8)
    self:置颜色(39,53,81,255)
end


local 头像网格 = 坐骑属性:创建网格("头像网格",15,307,300,150)

function 头像网格:初始化()
    self:创建格子(70,70,5,5,3,4,true)
end


function 头像网格:左键弹起(x, y, a, b, msg)
    if self.子控件[a] and self.子控件[a]._spr and self.子控件[a]._spr.数据 then
        if 坐骑属性.选中坐骑 then
            self.子控件[坐骑属性.选中坐骑]._spr.确定 = nil
        end
        坐骑属性.选中坐骑 = a
        self.子控件[a]._spr.确定 = true
        坐骑属性.属性:重置()
        坐骑属性.技能:重置()
        坐骑属性:重置()
        坐骑属性.名称输入:置文本(多开数据[当前].角色信息.坐骑列表[坐骑属性.选中坐骑].名称)
        坐骑属性.装备网格:置物品({多开数据[当前].角色信息.坐骑列表[坐骑属性.选中坐骑].饰品})
        坐骑属性.模型格子:置数据(多开数据[当前].角色信息.坐骑列表[坐骑属性.选中坐骑],"坐骑",150,225,多开数据[当前].角色信息.模型)
    end
end

function 头像网格:置头像(数据)
    for i = 1,#头像网格.子控件 do
        local lssj = __头像格子.创建(当前)
        lssj:置头像(数据[i],"大")
        头像网格.子控件[i]:置精灵(lssj)
    end
end

local 装备网格 = 坐骑属性:创建网格("装备网格",248,117,60,180)

function 装备网格:初始化()
    self:创建格子(55,55,4,0,1,1)
end

function 装备网格:左键弹起(x, y, a, b, msg)
    if self.子控件[a] and self.子控件[a]._spr and self.子控件[a]._spr.物品 then
        local x,y = self.子控件[a]:取坐标()
        local w,h = self.子控件[a]:取宽高()
        self.子控件[a]._spr:详情打开(520,86,w,h,nil,a)
    end
end

function 装备网格:置物品(数据)
    for i = 1,#装备网格.子控件 do
        local lssj = __物品格子.创建(当前)
        lssj:置物品(数据[i],"白格子","装备")
        装备网格.子控件[i]:置精灵(lssj)
    end
end

function 坐骑属性:改名(内容)
    self.名称输入:置文本(内容)
    if 多开数据[当前].角色信息.坐骑列表[坐骑属性.选中坐骑] then
        多开数据[当前].角色信息.坐骑列表[坐骑属性.选中坐骑].名称=内容
    end
end

local 改名按钮 = 坐骑属性:创建我的按钮(__res:getPNGCC(2,493,765,118,35,true):拉伸(104,35),"改名按钮",198,72,"▲ 改名")

function 改名按钮:左键弹起(x,y,msg)
    if 坐骑属性.选中坐骑 and 多开数据[当前].角色信息.坐骑列表[坐骑属性.选中坐骑] then
        if 取特殊字符(坐骑属性.名称输入:取文本()) then
		    发送数据(当前 or self and self.当前,60,{认证码=多开数据[当前].角色信息.坐骑列表[坐骑属性.选中坐骑].认证码,名称=坐骑属性.名称输入:取文本()})
        else
           多开数据[当前].__UI弹出.提示框:打开("输入名称不能是空")
        end
    end
end

local 属性 = 坐骑属性:创建控件("属性",339,60,440,400)
function 属性:初始化()
    local nsf = require('SDL.图像')(440,315)
    if nsf:渲染开始() then
        字体18:置颜色(255,255,255)
        local lssj = 取输入背景(0,0,100,23)
        local pyx = 0
        local pyy = 0
        for i=1,#lsb do
            if i > 6 then 
                pyx = 197
                pyy = -240
            end
            lssj:显示(79+pyx,14+pyy+((i-1)*40))
            字体18:取图像(lsb[i]):置混合(0):显示(pyx,15+pyy+((i-1)*40))
        end
        nsf:渲染结束()
    end
    self:置精灵(nsf:到精灵())
end

function 属性:显示(x,y)
    if self.数据 then
        self.数据:显示(x,y)
    end
end

function 属性:重置()
    self:置可见(true)
    if not 坐骑属性.选中坐骑 then
        self.数据 = nil
    else
        local nsf = require('SDL.图像')(410,315)
        if nsf:渲染开始() then
            字体18:置颜色(39,53,81)
            local pyx = 0
            local pyy = 0
            for i=1,#lsb2 do
                if i > 6 then 
                    pyx = 197
                    pyy = -240
                end
                if lsb2[i] == "主属性" then
                    字体18:取图像(多开数据[当前].角色信息.坐骑列表[坐骑属性.选中坐骑][lsb2[i]] or "无"):置混合(0):显示(90+pyx,15+pyy+((i-1)*40))
                else
                    字体18:取图像((多开数据[当前].角色信息.坐骑列表[坐骑属性.选中坐骑][lsb2[i]] or 多开数据[当前].角色信息.坐骑列表[坐骑属性.选中坐骑].等级 or 0)):置混合(0):显示(90+pyx,15+pyy+((i-1)*40))
                end
                
            end
            nsf:渲染结束()
        end
        self.数据 = nsf:到精灵()
    end
end

-- local 加点按钮 = 属性:创建我的按钮(__res:getPNGCC(1,626,28,58,34,true):拉伸(55,30),"加点按钮",140,212,"加点")

-- function 加点按钮:左键弹起(x,y,msg)
--     if 坐骑属性.选中坐骑 and 多开数据[当前].角色信息.坐骑列表[坐骑属性.选中坐骑] then
--         table.print(多开数据[当前].角色信息.坐骑列表[坐骑属性.选中坐骑])
--         多开数据[当前].__UI界面.窗口层.坐骑加点:打开(多开数据[当前].角色信息.坐骑列表[坐骑属性.选中坐骑],坐骑属性.选中坐骑)
--     end
-- end

local 驯养按钮 = 属性:创建我的按钮(__res:getPNGCC(1,626,28,58,34,true):拉伸(55,30),"驯养按钮",131+239,212,"驯养")

function 驯养按钮:左键弹起(x,y,msg)
    if 坐骑属性.选中坐骑 and 多开数据[当前].角色信息.坐骑列表[坐骑属性.选中坐骑] then
        发送数据(当前 or self and self.当前,61,{多开数据[当前].角色信息.坐骑列表[坐骑属性.选中坐骑].认证码})
    end
end

local 修炼按钮 = 属性:创建我的按钮(__res:getPNGCC(1,626,28,58,34,true):拉伸(55,30),"修炼按钮",131+239,92,"修炼")

function 修炼按钮:左键弹起(x,y,msg)
    if 坐骑属性.选中坐骑 and 多开数据[当前].角色信息.坐骑列表[坐骑属性.选中坐骑] then
        local 事件 = function()
            多开数据[当前].__UI界面.窗口层.功能给予:打开({名称="坐骑修炼",认证码=多开数据[当前].角色信息.坐骑列表[坐骑属性.选中坐骑].认证码})
        end
        local wb = "通过修炼炼化#Y/60至80级#W/的人物武器装备以及#Y/0至125级#W/的召唤兽装备来提升#R坐骑#W的#Y/好感度#W/。！"     
        多开数据[当前].__UI界面.窗口层.文本栏:打开(wb,285,155,390,200,事件)
    end
end

-- local 喂养按钮 = 属性:创建我的按钮(__res:getPNGCC(1,626,28,58,34,true):拉伸(55,30),"喂养按钮",131+239,132,"喂养")

-- function 喂养按钮:左键弹起(x,y,msg)
--     if 坐骑属性.选中坐骑 and 多开数据[当前].角色信息.坐骑列表[坐骑属性.选中坐骑] then
--         local 事件 = function()
--             发送数据(当前 or self and self.当前,84,{编号=坐骑属性.选中坐骑})
--         end
--         local wb = "你可以消耗三药或者烹饪来提升召唤兽饱食度，当饱食度低于50时有50%概率使某种附带技能失效，当等于0时，附带技能完全失效！"     
--         多开数据[当前].__UI界面.窗口层.文本栏:打开(wb,285,155,390,200,事件)
--     end
-- end

-- local 洗点按钮 = 属性:创建我的按钮(__res:getPNGCC(1,401,65,175,43,true):拉伸(100,43),"洗点按钮",140,350,"洗点")
-- function 洗点按钮:左键弹起(x,y,msg)
--     if 坐骑属性.选中坐骑 and 多开数据[当前].角色信息.坐骑列表[坐骑属性.选中坐骑] then
--         发送数据(当前 or self and self.当前,78,{编号=坐骑属性.选中坐骑})
--     end
-- end

 local 设置飞行 = 坐骑属性:创建我的按钮(__res:getPNGCC(1,401,65,175,43,true):拉伸(126,43),"设置飞行",270,350,"设置默认飞行")
-- function 设置飞行:左键弹起(x,y,msg)
--     if 坐骑属性.选中坐骑 and 多开数据[当前].角色信息.坐骑列表[坐骑属性.选中坐骑] then
--         发送数据(当前 or self and self.当前,27,{飞行=坐骑属性.选中坐骑})
--     end
-- end
-- local 休息按钮 = 属性:创建我的按钮(__res:getPNGCC(1,401,65,175,43,true):拉伸(100,43),"休息按钮",140,322,"参战")

-- function 休息按钮:重置()
--     if 坐骑属性.选中坐骑 and 多开数据[当前].角色信息.坐骑列表[坐骑属性.选中坐骑].参战信息 then
--         属性:我的按钮置文字(self, __res:getPNGCC(1, 401, 65, 175, 43, true):拉伸(100, 43), "休息")
--     else
--         属性:我的按钮置文字(self, __res:getPNGCC(1, 401, 65, 175, 43, true):拉伸(100, 43), "参战")
--     end
-- end

-- function 休息按钮:左键弹起(x,y,msg)
--     if 坐骑属性.选中坐骑 and 多开数据[当前].角色信息.坐骑列表[坐骑属性.选中坐骑] then
--         发送数据(当前 or self and self.当前,5002,{序列=多开数据[当前].角色信息.坐骑列表[坐骑属性.选中坐骑].认证码})
--     end
-- end

local 技能 = 坐骑属性:创建控件("技能",339,290,420,200)

function 技能:初始化()
    local nsf = require('SDL.图像')(420,200)
    if nsf:渲染开始() then
        __res:getPNGCC(3,438,608,438,316, true):拉伸(400, 180):显示(5,20)
        nsf:渲染结束()
    end
    self:置精灵(nsf:到精灵())
end

function 技能:显示(x,y)
    if self.数据 then
        self.数据:显示(x,y)
    end
end

function 技能:重置()
    self.数据 = nil
    if 坐骑属性.选中坐骑 then
      self.技能网格:置数据(多开数据[当前].角色信息.坐骑列表[坐骑属性.选中坐骑].坐骑技能)
    else
      self.技能网格:置数据({})
    end
end

-- local 重置I = 技能:创建我的按钮(__res:getPNGCC(1,626,28,58,34,true):拉伸(70,30),"重置I",320,20,"重置I") 
-- function 重置I:左键弹起(x,y,msg)
--     if 坐骑属性.选中坐骑 and 多开数据[当前].角色信息.坐骑列表[坐骑属性.选中坐骑] then
--         local 事件 = function()
--             发送数据(当前 or self and self.当前,85.1,{编号=坐骑属性.选中坐骑})
--         end
--         local wb = "通过该功能可#Y/随机重置#W/坐骑技能，但是需要消耗#R/500W银子！"     
--         多开数据[当前].__UI界面.窗口层.文本栏:打开(wb,285,155,390,200,事件)
--     end
-- end

-- local 重置II = 技能:创建我的按钮(__res:getPNGCC(1,626,28,58,34,true):拉伸(70,30),"重置II",320,60,"重置II")
-- function 重置II:左键弹起(x,y,msg)
--     if 坐骑属性.选中坐骑 and 多开数据[当前].角色信息.坐骑列表[坐骑属性.选中坐骑] then
--         local 事件 = function()
--             发送数据(当前 or self and self.当前,85.2,{编号=坐骑属性.选中坐骑})
--         end
--         local wb = "通过该功能可#Y/随机重置#W/坐骑技能为#Y/3个高级技能#W/，但是需要消耗#R/5000W银子！"     
--         多开数据[当前].__UI界面.窗口层.文本栏:打开(wb,285,155,390,200,事件)
--     end
-- end

local 放生按钮 = 坐骑属性:创建我的按钮(__res:getPNGCC(1,401,65,175,43,true):拉伸(80,43),"放生按钮",650,445,"放生")

function 放生按钮:左键弹起(x,y,msg)
    if 坐骑属性.选中坐骑 and 多开数据[当前].角色信息.坐骑列表[坐骑属性.选中坐骑] then
        local 事件 = function()
            发送数据(当前 or self and self.当前,11.3,{多开数据[当前].角色信息.坐骑列表[坐骑属性.选中坐骑].认证码})
        end
        local wb = "真的要放生#Y/"..多开数据[当前].角色信息.坐骑列表[坐骑属性.选中坐骑].等级.."级的#R/"..多开数据[当前].角色信息.坐骑列表[坐骑属性.选中坐骑].名称.."#W/吗?"     
        多开数据[当前].__UI界面.窗口层.文本栏:打开(wb,285,155,390,200,事件)
    end
end

local 主属性 =  坐骑属性:创建我的按钮(__res:getPNGCC(1,401,65,175,43,true):拉伸(80,43),"主属性",550,445,"主属性") 
function 主属性:左键弹起(x,y,msg)
    if 坐骑属性.选中坐骑 and 多开数据[当前].角色信息.坐骑列表[坐骑属性.选中坐骑] then
        if 多开数据[当前].角色信息.坐骑列表[坐骑属性.选中坐骑].主属性 then
            多开数据[当前].__UI弹出.提示框:打开('#Y该坐骑已经设置过主属性了')
        else
            local 回调处理 = function(i,选项)
                发送数据(当前 or self and self.当前,11.2,{属性=选项[i],认证码=多开数据[当前].角色信息.坐骑列表[坐骑属性.选中坐骑].认证码})
            end
            多开数据[当前].__UI界面.窗口层.对话栏:打开({ 模型 = "梦幻精灵", 名称 = "梦幻精灵", 对话 = "选定主属性后，无法修改，请选择改坐骑的主属性",选项={"体质","魔力","力量","耐力","敏捷"}, 回调处理 = 回调处理 })
        end
    end
end

local 学习 =  坐骑属性:创建我的按钮(__res:getPNGCC(1,401,65,175,43,true):拉伸(80,43),"学习",450,445,"学习") 
function 学习:左键弹起(x,y,msg)
    if 坐骑属性.选中坐骑 and 多开数据[当前].角色信息.坐骑列表[坐骑属性.选中坐骑] then
        if 坐骑属性.技能.选中技能 == nil then
            多开数据[当前].__UI弹出.提示框:打开('#Y请选择要升级的技能')
        elseif 多开数据[当前].角色信息.坐骑列表[坐骑属性.选中坐骑].可用技能点 <= 0 then
            多开数据[当前].__UI弹出.提示框:打开('#Y没有可以分配的技能点')
        else
            local 回调处理 = function(i,选项)
                if 选项[i] == "确定" then
                    发送数据(当前 or self and self.当前,63,{技能=坐骑属性.技能.选中技能数据.名称,认证码=多开数据[当前].角色信息.坐骑列表[坐骑属性.选中坐骑].认证码})
                end
            end
            if 坐骑属性.技能.选中技能数据.等级==0 then
                多开数据[当前].__UI界面.窗口层.对话栏:打开({ 模型 = "梦幻精灵", 名称 = "梦幻精灵", 对话 = "你确认要将技能提升么？#Y提升技能需要消耗220000经验和1000000金钱，以及1点技能点。",选项={"确定"}, 回调处理 = 回调处理 })
            elseif 坐骑属性.技能.选中技能数据.等级==1 then
                多开数据[当前].__UI界面.窗口层.对话栏:打开({ 模型 = "梦幻精灵", 名称 = "梦幻精灵", 对话 = "你确认要将技能提升么？#Y提升技能需要消耗240000经验和1500000金钱，以及1点技能点。",选项={"确定"}, 回调处理 = 回调处理 })
            elseif 坐骑属性.技能.选中技能数据.等级==2 then
                多开数据[当前].__UI界面.窗口层.对话栏:打开({ 模型 = "梦幻精灵", 名称 = "梦幻精灵", 对话 = "你确认要将技能提升么？#Y提升技能需要消耗260000经验和2000000金钱，以及1点技能点。",选项={"确定"}, 回调处理 = 回调处理 })
            end

        end
    end
end

-- function 洗点按钮:左键弹起(x,y,msg)
--     if 坐骑属性.选中坐骑 and 多开数据[当前].角色信息.坐骑列表[坐骑属性.选中坐骑] then
--         发送数据(当前 or self and self.当前,78,{编号=坐骑属性.选中坐骑})
--     end
-- end

-- function 设置飞行:左键弹起(x,y,msg)
--     if 坐骑属性.选中坐骑 and 多开数据[当前].角色信息.坐骑列表[坐骑属性.选中坐骑] then
--         发送数据(当前 or self and self.当前,124.1,{飞行=坐骑属性.选中坐骑})
--     end
-- end

local 技能网格 = 技能:创建网格("技能网格",13,25,400,185)

function 技能网格:初始化()
    self:创建格子(55,55,8,8,3,6,true)
end

function 技能网格:左键弹起(x, y, a, b, msg)
    if self.子控件[a] and self.子控件[a]._spr and self.子控件[a]._spr.数据 then
        self.子控件[a]._spr:详情打开(x,y)
        if 技能.选中技能 and self.子控件[技能.选中技能] then
            self.子控件[技能.选中技能]._spr.确定 = nil
        end
        技能.选中技能 = a
        技能.选中技能数据 = self.子控件[技能.选中技能]._spr.数据
        self.子控件[技能.选中技能]._spr.确定 = true
    end
end

function 技能网格:置数据(数据,等级)
    for i = 1,#技能网格.子控件 do
        技能网格.子控件[i]:置精灵()
    end
    local a = 0
    for i,v in pairs(数据) do
        a = a  + 1
        local lssj = __坐骑技能格子.创建(当前)
        lssj:置数据({名称=i,等级=v},55,55,nil)
        技能网格.子控件[a]:置精灵(lssj)
    end
end
